package Serveur;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Vector;


public class ListeUtilisateur {
	//////////////////////////////
	//Attributs					//
	//////////////////////////////
	private Hashtable<String, Utilisateur> utilisateurs;
	private Serveur serveur;
	
	//////////////////////////////
	//Méthodes publiques		//
	//////////////////////////////
	public ListeUtilisateur(Serveur serveur) {
		utilisateurs = new Hashtable<String, Utilisateur>();
		this.serveur=serveur;
		this.recupererListe();
	}
	
	public void ajouterUtilisateur(String id, String mdp) {
		Utilisateur utilisateur = new Utilisateur(id, mdp);
		this.lierUtilisateur(utilisateur, id);
	}
	
	public void nouvelUtilisateur(String id, String mdp){
		FileWriter writer = null;
		try{
		     writer = new FileWriter("Serveur/Fsauve.txt", true);
		     writer.write(id,0,id.length());
		     writer.write('\n');
		     writer.write(mdp,0,mdp.length());
		     writer.write('\n');
		}catch(IOException ex){
		    ex.printStackTrace();
		}finally{
		  if(writer != null){
		     try {
				writer.close();
			} catch (IOException e) {
				System.out.println("erreur lors de la fermeture du fichier");
			}
		  }
		}
		this.ajouterUtilisateur(id, mdp);
	}

	public void lierUtilisateur(Utilisateur utilisateur, String id) {
		utilisateurs.put(id, utilisateur);
	}
	
	public Utilisateur unUtilisateur(String id) {
	    return utilisateurs.get(id);
	}  // Fin unAuteur
	
	public Vector<String> listeConnecte(){
		 Enumeration<Utilisateur> enumr =utilisateurs.elements();
		 Vector<String> liste = new Vector<String>();
		 if  (enumr.hasMoreElements()) {
		      while (enumr.hasMoreElements()) {
		          Utilisateur user = enumr.nextElement();
		          if (user.getEtat()){
		        	  liste.addElement(user.getid());
		          }
		      }
		  }
		 return liste;
	}
	
	//////////////////////////////
	//Méthodes privées			//
	//////////////////////////////
	
	//récupère la liste des utilisateurs
	private void recupererListe(){
		BufferedReader LecteurBufferise = null;
		String Chemin = "Serveur/Fsauve.txt";
		String ligneDonnee;
		boolean eof = false;
		try {
			// Ouverture du Fichier
			LecteurBufferise = new BufferedReader(new FileReader(Chemin));
			String id="";
			String mdp="";
			int i =0;
			while (eof != true) {
				// Lecture de la ligne
				ligneDonnee = LecteurBufferise.readLine();
				if (ligneDonnee != null) {
					if(i%2==0){
						id=ligneDonnee;
					}
					else{
						mdp=ligneDonnee;
						this.ajouterUtilisateur(id, mdp);
					}
					i=i+1;
				} else {
					eof = true;
				}
			}
		} catch (FileNotFoundException ex) {
			System.out.println("Fichier Non Trouvé !!");
		} catch (IOException ex) {
			System.out.println("Erreur lecture ligne fichier !!");
		} finally {
			try {
				LecteurBufferise.close();
			} catch (IOException ex1) {
				System.out.println("Erreur fermeture fichier !!");
			}
		}
	}

	
}
